<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /*
            Generator函数是ES6提供的一种异步编程解决方案
            Generator函数是一个状态机，封装了多个内部状态。
            执行Generator 函数会返回一个遍历器对象，也就是说，Generator函数除了状态机，还是一个遍历器对象生成函数。返回的遍历器对象，可以依次遍历Generator函数内部的每一个状态。
        */

        // * 挨着function右边，挨着函数名左边，写在function和gen中间都可以
        function* gen() {
            // yield英文是产出的意思
            console.log(1);
            yield;
            console.log(2);
            yield;
            console.log(3);
        }
        let g = gen();//调用gen函数拿到迭代器
        g.next();//每次调用next()，函数会执行，遇到yield字样就会停止，直到下次next再执行，后面再遇到yield也是如此
        g.next();
        g.next();
    </script>
</body>

</html>